package com.qf.taobei.service;


import com.qf.taobei.entity.*;
import com.qf.taobei.entity.bo.CartAdd;
import com.qf.taobei.entity.vo.OrderDetailsVo;
import com.qf.taobei.entity.OrderProduct;
import com.qf.taobei.entity.vo.StoreOrderVo;
import com.qf.taobei.entity.vo.ViewOrderDetails;

import java.util.List;

/**
 * @author 吴彦祖
 */
public interface OrderService {
    /**
     *通过订单编号查询某个订单
     */
    List<Order> selectOrderByOrderNumber(Integer uid,String orderNumber);

    /**
     * 管理员查询订单
     * @param orderNumber
     * @return
     */
    List<Order> queryOrderByOrderNumber(String orderNumber);
    /**
     * 通过用户id查询用户订单列表
     * @param userId
     * @return
     */
    List<Order> selectOrderListByUserId(Integer userId);
    /**
     * 通过订单编号查询订单详情
     */
    List<OrderDetailsVo> selectOrderDetailsByOrderId(Integer orderId);

    /**
     * 修改订单
     */
    Integer updeteOrderByOrderId(Order order);
    /**
     * * 用户删除订单（伪删除）
     */
    Integer userDelOrderByOrderId(Order order);
    /**
     *  * 店铺删除订单（伪删除）
     */
    Integer stroeDelOrderByOrderId(Order order);
    /**
     * 添加订单
     */
    Order addOrderByUserId(Integer userId, List<CartAdd> list);
    /**
     * 订单添加商品评价
     */
//    Comment addCommentByProductId(Integer pid);
    /**
     * 查询店铺所有订单
     */
    List<StoreOrderVo> selectAllOrderByStoreId(Integer storeId);
    /**
     * 真删除订单
     */
    Integer delOrder(String orderNumber);



    List<ViewOrderDetails> queryOrderDetailsByOrderId(Integer id);
    /*
     * 查询所有订单
     * */
    RespBean getOrderList();
    /**
     * 店家模糊查询自己的订单
     * @param orderNumber
     * @return
     */
    List<StoreOrderVo> selectOrderNumberLikeByStore(Integer storeId,String orderNumber);

    /**
     * 订单编号查订单详情
     * @param orderNumber
     * @return
     */
    OrderDetailsVo selectOrderDetailsByOrderNumber(String orderNumber);
    /**
     * 卖家查询其所管理的全部店的所有订单
     */
    List<OrderDetailsVo> selectAllStoreOrderByUserId(Integer userId);
//    List<StoreOrderVo> selectOrderNumberLikeByStore(String orderNumber);

    //根据订单状态查询用户订单列表
    List<Order> getOrderListByStatus(Integer id, Integer status);

    Integer deleteOrderByOrderId(Integer id);
}
